<?php
namespace app\api\controller;
class Task extends Common{
    function index(){
        echo session_id();
        // cookie('PHPSESSID',null);
        // p(cookie(''));
        //session_destroy();

        // session(config('keys.api_user'),null);
        return json('访问成功');
    }
	/**
	 * 任务完成汇报接口
     * @param  integer  $device_id   设备ID
	 * @param  boolean  $finish      是否完成当前任务
	 * @return json
	 */
    function finish($device_id=0,$finish=true,$cate=null,$data=[]){
        $user=$this->user;
        $member_id=$user['id'];
        if($device_id<=0){
            // 前台接口请求时 $user 存在 device_id
            $device_id=$user['device_id'];
        }
        // 扩展任务的额外处理
        $extraEvents=['queryWeixin','wxMsg','wxMsgInfos'];
        if(in_array($cate,$extraEvents)&&is_callable([$this,$cate])){
            if(is_string($data)){
                $data=json_decode($data,true);
            }
            call_user_func([$this,$cate],$data,$device_id);
        }


        
    	$rs=model('task_device')->nextTask($member_id,$device_id,$finish);
    	if($rs['success']){
    		return json(lang('Successful operation'));
    	}else{
    		$msg=$rs['msg'];
    		if(empty($msg)){
                $msg=lang('Failed operation');
            }
    		return json($msg,1);
    	}
    }
    /**
     * 每一个设备首次登陆应该进行该接口请求（载入初始任务）
     * @param  integer $device_id 设备ID
     * @return json
     */
    function start($device_id=0){
        return $this->finish($device_id,false);
    }

    ///////////
    //扩展任务处理 //
    ///////////
    

    /**
     * 查询手机号是否微信号数据返回接口
     * @return json
     */
    private function queryWeixin($data){
        if(empty($data))return;
        model('mobile')->queryWeixinEnd($data,$this->user['id']);
    }
    /**
     * 微信消息送达通知
     * @param  [type] $data [description]
     * @return [type]       [description]
     */
    private function wxMsg($data,$device_id){
        if(empty($data))return;
        model('weixinlogs')->wxMsgEnd($data,$this->user['id'],$device_id);
    }
    /**
     * 微信未读消息采集任务完成
     * @param  [type] $data [description]
     * @return [type]       [description]
     */
    private function wxMsgInfos($data,$device_id){
        // 采集消息为一条一条发送 请使用 api/weixinlogs/add() 获取
        //if(empty($data))return;
        model('weixinlogs')->wxMsgInfosEnd($data,$this->user['id'],$device_id);
    }
}
